package com.uade.entities;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Transient;

import com.uade.model.Compra;
import com.uade.model.ItemCompra;

/**
 * <!-- begin-user-doc --> <!-- end-user-doc -->
 * 
 * @generated
 */

@Entity
public class CompraEntity {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "compraEntity_id")
	private Long id;

	private String idModulo;

	private double coordenadaX;

	private double coordenadaY;

	private String fecha;

	@OneToMany (cascade = {CascadeType.ALL})
	@JoinColumn(name = "compraEntity_id", referencedColumnName = "compraEntity_id")
	private List<ItemCompraEntity> itemCompras;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "usuarioEntity_id")
	private UsuarioEntity usuario;

	private String estado;
	
	private Double montoTotal;

	public CompraEntity() {
		super();
		// TODO Auto-generated constructor stub
	}

	public CompraEntity(Long id, String idModulo, double coordenadaX,
			double coordenadaY, String fecha,
			List<ItemCompraEntity> itemCompras, UsuarioEntity usuario,
			String estado,double montoTotal) {
		super();
		this.id = id;
		this.idModulo = idModulo;
		this.coordenadaX = coordenadaX;
		this.coordenadaY = coordenadaY;
		this.fecha = fecha;
		this.itemCompras = itemCompras;
		this.usuario = usuario;
		this.estado = estado;
		this.montoTotal= montoTotal;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public List<ItemCompraEntity> getItemCompras() {
		return itemCompras;
	}

	public void setItemCompras(List<ItemCompraEntity> itemCompras) {
		this.itemCompras = itemCompras;
	}

	public UsuarioEntity getUsuario() {
		return usuario;
	}

	public void setUsuario(UsuarioEntity usuario) {
		this.usuario = usuario;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public String getIdModulo() {
		return idModulo;
	}

	public void setIdModulo(String idModulo) {
		this.idModulo = idModulo;
	}

	public double getCoordenadaX() {
		return coordenadaX;
	}

	public void setCoordenadaX(double coordenadaX) {
		this.coordenadaX = coordenadaX;
	}

	public double getCoordenadaY() {
		return coordenadaY;
	}

	public void setCoordenadaY(double coordenadaY) {
		this.coordenadaY = coordenadaY;
	}

	public String getFecha() {
		return fecha;
	}

	public void setFecha(String fecha) {
		this.fecha = fecha;
	}

	@Transient
	public Compra getCompra() {
		List<ItemCompra> items = new ArrayList<ItemCompra>();
		for (ItemCompraEntity itemE : this.getItemCompras()) {
			items.add(itemE.getItemCompra());
		}
		return new Compra(this.getId().longValue(), this.getIdModulo(),
				this.getCoordenadaX(), this.getCoordenadaY(), this.getFecha(),
				null/*revisar*/, items, this.getMontoTotal(), this.getEstado());
	}

	public Double getMontoTotal() {
		return montoTotal;
	}

	public void setMontoTotal(Double montoTotal) {
		this.montoTotal = montoTotal;
	}

}
